package com.dhl.state.sttatepackage;

import com.dhl.state.RaffleActivity;

import java.util.Random;

/**
 * 可以抽奖的状态
 *
 * @author Administrator
 */
public class CanRaffleState extends State {
    /**
     * 活动
     */
    RaffleActivity activity;

    public CanRaffleState(RaffleActivity activity) {
        this.activity = activity;
    }

    /**
     * 已经扣除了积分不能在扣除
     */
    @Override
    public void deductMoney() {
        System.out.println("已经扣除了积分不能在扣除");
    }

    /**
     * 可以抽奖，抽完奖励之后根据实际情况，改成新的 状态
     *
     * @return
     */
    @Override
    public boolean raffle() {
        System.out.println("正在抽奖请稍等");
        Random r = new Random();
        int num = r.nextInt(10);
        // 10%中奖机会
        if (num == 0) {
            // 改变活动的状态，设置为发放奖品 context
            activity.setState(activity.getDispenseState());
            return true;
        } else {
            System.out.println("很遗憾没有中将");
            // 改变状态，设置为不能抽奖状态
            activity.setState(activity.getNoRafflleState());
            return false;
        }
    }

    /**
     * 不能发放奖品
     */
    @Override
    public void dispensePrize() {
        System.out.println("没中奖，不能发放奖品");
    }
}
